﻿using System;
using System.Collections.Generic;
using FluorineFx;
using Neturion.Dados;
using Neturion.Fachadas;

namespace Neturion.Servicos
{
    [RemotingService]
    public class ServicoCliente
    {
        public Cliente Inserir(Cliente cliente, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().Inserir(cliente, usuarioPermissao);
        }

        public Cliente Atualizar(Cliente cliente, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().Atualizar(cliente, usuarioPermissao);
        }

        public void Excluir(Cliente cliente, Usuario usuarioPermissao)
        {
            Fachada.GetInstancia().Excluir(cliente, usuarioPermissao);
        }

        public Cliente ObterClientePorId(int id, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().ObterClientePorId(id, usuarioPermissao);
        }

        public Cliente ObterClientePorCpfCnpj(Usuario usuarioPermissao, string cpfCnpj)
        {
            return Fachada.GetInstancia().ObterClientePorCpfCnpj(usuarioPermissao, cpfCnpj);
        }

        public Cliente ObterClientePorPessoa(Usuario usuarioPermissao, Pessoa pessoa)
        {
            return Fachada.GetInstancia().ObterClientePorPessoa(usuarioPermissao, pessoa);
        }

        public IList<Cliente> ObterTodosClientes(Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().ObterTodosClientes(usuarioPermissao);
        }

        public IList<Cliente> ObterTodosClientes(int inicio, int quantidade, int quantidadeMinima, Usuario usuarioPermissao, string nomeRazaoSocial, string apelidoFantasia, string nomeReduzido, string cpfCnpj, Midia midia, EnumTipoPessoa enumTipoPessoa, RamoAtividade ramoAtividade, DateTime? dataNascimentoAberturaDe, DateTime? dataNascimentoAberturaAte, DateTime? cadastroDe, DateTime? cadastroAte, DateTime? inicioVigenciaDe, DateTime? inicioVigenciaAte, DateTime? fimVigenciaDe, DateTime? fimVigenciaAte)
        {
            return Fachada.GetInstancia().ObterTodosClientes(inicio, quantidade, quantidadeMinima, usuarioPermissao, nomeRazaoSocial, apelidoFantasia, nomeReduzido, cpfCnpj, midia, enumTipoPessoa, ramoAtividade, dataNascimentoAberturaDe, dataNascimentoAberturaAte, cadastroDe, cadastroAte, inicioVigenciaDe, inicioVigenciaAte, fimVigenciaDe, fimVigenciaAte);
        }

        public Cliente ObterClientePorCodigo(string codigo, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().ObterClientePorCodigo(codigo, usuarioPermissao);
        }
    }
}